package com.efast.dmom.mes.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.efast.dmom.mes.dao.entity.EquipSpareDao;
import com.efast.dmom.mes.entity.EquipSpareEntity;
import com.efast.dmom.mes.entity.EquipSpareOutboundEntity;
import com.efast.dmom.mes.service.EquipCutterPolishedRecordService;
import com.efast.dmom.mes.service.EquipSpareOutboundService;
import com.efast.dmom.mes.service.EquipSpareService;
import com.efast.dmom.mes.util.SpringWebUtils;
import com.efast.dmom.mes.util.TimeUtil;

@Service
@Transactional
public class EquipSpareServiceImpl implements EquipSpareService {
	
	@Autowired
	private EquipSpareDao   equipSpareDao;
	
	@Autowired
	private EquipCutterPolishedRecordService equipCutterPolishedRecordService; 
	
	@Autowired
	private EquipSpareOutboundService equipSpareOutboundService;

	@Override
	public void increaseInventoryBySpareId(List<EquipSpareEntity> equipSpareList) {
		List<EquipSpareEntity> spareList = equipSpareDao.getEquipSpareList(equipSpareList);
		for (EquipSpareEntity data:equipSpareList) {
			for (EquipSpareEntity entity:spareList) {
				if (data.getId() == entity.getId()) {
					data.setInventory(data.getInventory()+entity.getInventory());
				}
			}
		}
		equipSpareDao.updateBatch(equipSpareList);
	}

	@Override
	public int getInventoryByCutterCode(long spareId) {
		return equipSpareDao.getInventoryByCutterCode(spareId);
	}

	@Override
	public void decreaseInventoryBySpareId(List<EquipSpareEntity> equipSpareList) {
		List<EquipSpareEntity> spareList = equipSpareDao.getEquipSpareList(equipSpareList);
		for (EquipSpareEntity data:equipSpareList) {
			for (EquipSpareEntity entity:spareList) {
				if (data.getId() == entity.getId()) {
					data.setInventory(entity.getInventory()-data.getInventory());
				}
			}
		}
		equipSpareDao.updateBatch(equipSpareList);
	}

	@Override
	public void increaseCutterUsedTimes(int submittedQty, long spareId) {
		List<EquipSpareOutboundEntity> outboundEntityList =  equipSpareOutboundService.getOutBoundEntityList(spareId,"刀具打磨");
		EquipSpareEntity equipSpareEntity = equipSpareDao.getEquipSpareBySpareId(spareId);
		int cutterUsedTimes = equipSpareEntity.getCutterUsedTimes();
		int cutterPolishedTimes = equipSpareEntity.getCutterPolishedTimes();
		equipSpareEntity.setLastModifiedTime(TimeUtil.getLocalDateTime());
		equipSpareEntity.setLastModifier(SpringWebUtils.getRequestUser());
		if (outboundEntityList != null && outboundEntityList.size() > 0) {
			//刀具累计次数增加
			equipCutterPolishedRecordService.increasePolishedUsedTimes(submittedQty,spareId);
			//刀具打磨后总使用次数
			equipSpareEntity.setCutterPolishedTimes(cutterPolishedTimes+submittedQty);
		}
		//刀具已使用次数
		equipSpareEntity.setCutterUsedTimes(cutterUsedTimes+submittedQty);
		equipSpareDao.increaseCutterUsedTimes(equipSpareEntity);
	}

	@Override
	public int getQtyByCutterCode(long spareId) {
		return equipSpareDao.getQtyByCutterCode(spareId);
	}


}
